import requests
from bs4 import BeautifulSoup

# url = 'http://mil.news.sina.com.cn/china/2017-04-05/doc-ifycwymx3854291.shtml'
# page = requests.get(url)
# page.encoding = 'utf-8'
# # 编码……恐怕是Python里最让人头疼的问题了
# soup = BeautifulSoup(str(page.text), 'html.parser')
#
# article = soup.select('.content')[0].text
# # 或者
# # article = soup.select('#artibody')[0].text
# # Select返回一个list，[0]选中其中第一个元素（其实在这个网页里，这个list只会有一个元素）
# print(article)

# 选取文本内容的方法
# 1.BeautifulSoup().select()方法
url = 'https://www.cnblogs.com/kemuling/p/14298594.html'
response = requests.get(url)
response.encoding = response.apparent_encoding
# 因为网站使用的不是通用的utf-8格式，而是gzip，所以要让它判断解码格式
html = BeautifulSoup(response.text, 'lxml')
# 获取到的网页信息需要进行解析，使用lxml解析器，其实默认的解析器就是lxml，但是这里会出现警告提示，方便你对其他平台移植
content = html.select('#cnblogs_post_body')
# 将复制好的选择器信息放进select方法中，将获取到的内容作为tag形式放入一个列表中
print(content[0].get_text())
# 打印这个列表中第一个内容，就是我们要获得的信息

# 2.HTMLSession.get().html.find()方法
# from requests_html import HTMLSession
# session=HTMLSession()
# url=session.get('https://python123.io/index')
# content=url.html.find('#links > div:nth-child(1) > div.main > div > div.landing.is-clipped > '
#                       'div:nth-child(2) > div:nth-child(1) > h4:nth-child(6) > span',first=True)
# #将选择器信息作为find方法中第一个参数键入，加上first参数，值为Ture
# print(content.text)
# #输出requests_html的元素的文本属性，得到目标文本(content变量类型为requests_html.Element)


# 3.etree.HTML().xpath()方法
# from lxml import etree
# import requests
#
# url = 'https://www.cnblogs.com/kemuling/p/14298594.html'
# response = requests.get(url)
# response.encoding = response.apparent_encoding
# label = etree.HTML(response.text)
# # 提取这个页面中所有的标签信息
# content = label.xpath('//*[@id="cnblogs_post_body"]/p[5]')
# # 提取span标签中class名为"is-text-small is-text-grey"的内容信息,并且存入一个列表中
# print(content[0])
# # 打印获得的文本信息
